package main

import "fmt"

// 反转数组
// 利用 defer 后进先出 特性实现
func reverse(arr []int) (reverseArr []int) {
	reverseArr = make([]int, 0, len(arr))
	for i := 0; i < len(arr); i++ {
		// 多个defer 语句，后进先出执行
		// 实现将数组的元素逆序存入新的数组中
		defer func(v int) {
			reverseArr = append(reverseArr, v)
		}(arr[i])
	}

	return
}

func main() {
	arr := [...]int{1, 2, 3, 4, 5}
	fmt.Println("arr: ", arr)
	fmt.Println("reverse(arr): ", reverse(arr[:]))
}
